package qiniu.voidcepc.voicepc.demos.web.aliyunllm;

import com.alibaba.dashscope.tools.FunctionDefinition;
import com.alibaba.dashscope.utils.JsonUtils;

public class ParamsSchema {
    /**
     * 向模型描述（注册）搜索播放工具。
     * */
    public static String musicParamsSchema = "{\n" +
            "  \"type\": \"object\",\n" +
            "  \"properties\": {\n" +
            "    \"songName\": {\n" +
            "      \"type\": \"string\",\n" +
            "      \"description\": \"要搜索并播放的歌曲名称，必填项(要求你返回的时候必须是英文或者拼音)。例如：'七里香 返回 'qilixiang''、'海阔天空' 返回 'haikuotiankong'\",\n" +
            "      \"minLength\": 1\n" +
            "    }\n"  +
            "  },\n" +
            "  \"required\": [\"songName\"],\n" +
            "  \"additionalProperties\": false\n" +
            "}";
    
    /**
     * 向模型描述（注册）暂停播放工具。
     * */
    public static String pauseParamsSchema = "{\n" +
            "  \"type\": \"object\",\n" +
            "  \"properties\": {\n" +
            "  },\n" +
            "  \"required\": [],\n" +
            "  \"additionalProperties\": false\n" +
            "}";

    /**
     * 获取搜索播放工具的FunctionDefinition
     * */
    public static FunctionDefinition getmusicFunctionForSearchAndPlay() {
        return FunctionDefinition.builder()
                .name("searchAndPlay") // 工具的唯一标识名，必须与本地实现对应。
                .description("当你想在要在本地搜索播放歌曲的时候非常有用,每一次返回的消息的content必须要添加必要的说明") // 清晰的描述能帮助模型更好地决定何时使用该工具。
                .parameters(JsonUtils.parseString(musicParamsSchema).getAsJsonObject())
                .build();
    }
    
    /**
     * 获取暂停播放工具的FunctionDefinition
     * */
    public static FunctionDefinition getmusicFunctionForPause() {
        return FunctionDefinition.builder()
                .name("pause") // 工具的唯一标识名，必须与本地实现对应。
                .description("当你想暂停当前播放的酷我音乐时非常有用,每一次返回的消息的content必须要添加必要的说明") // 清晰的描述能帮助模型更好地决定何时使用该工具。
                .parameters(JsonUtils.parseString(pauseParamsSchema).getAsJsonObject())
                .build();
    }

}
